package com.cp.yn.activity

import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Bundle
import com.common.base.base.BaseActivity
import com.common.base.tools.extend.click
import com.common.base.tools.utils.logger
import com.cp.yn.databinding.ActivityTestBinding
import com.cp.yn.utils.ScreenRotationHelper


class TestActivity : BaseActivity<ActivityTestBinding>() {

    override fun viewBinding(): ActivityTestBinding {
        return ActivityTestBinding.inflate(layoutInflater)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        var sensorManager =  getSystemService(SENSOR_SERVICE)as SensorManager
        var orientationSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
// 或者使用旋转向量传感器
// Sensor rotationVectorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);

        sensorManager.registerListener(sensorEventListener, orientationSensor, SensorManager.SENSOR_DELAY_NORMAL);

        viewBinding.apply {
            btnTest.click {
                ScreenRotationHelper.getRotation(this@TestActivity)
            }
        }
    }
    private val sensorEventListener: SensorEventListener = object : SensorEventListener {
        override fun onSensorChanged(event: SensorEvent) {
            // 处理传感器数据
            if (event.sensor.type == Sensor.TYPE_ORIENTATION) {
                val values = event.values
                // values[0] 是方位角（azimuth），values[1] 是俯仰角（pitch），values[2] 是滚动角（roll）
                // 你可以根据需要使用这些值
                logger.info("${values[0]}")
            }
            // 如果使用旋转向量传感器，则需要进一步处理数据以获取角度
        }

        override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
            // 可以选择性地实现这个方法来处理传感器精度的变化
        }
    }
}
